package org.jeecg.modules.manage.technology.util;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 文件下载工具类
 * 使用Hutool下载文件到内存
 * 
 * @Author: jeecg-boot
 * @Date: 2025-11-04
 * @Version: V1.0
 */
@Slf4j
@Component
public class FileDownloadUtil {

    /**
     * 下载文件到内存
     * 
     * @param fileUrl 文件URL地址
     * @return 文件字节数组，如果失败返回null
     */
    public byte[] downloadFile(String fileUrl) {
        if (StrUtil.isEmpty(fileUrl)) {
            log.warn("文件URL为空，跳过下载");
            return null;
        }

        try {
            log.info("开始下载文件：{}", fileUrl);
            
            // 使用Hutool的HttpUtil下载文件到字节数组
            byte[] fileBytes = HttpUtil.downloadBytes(fileUrl);
            
            if (fileBytes == null || fileBytes.length == 0) {
                log.warn("文件下载失败或文件为空：{}", fileUrl);
                return null;
            }

            log.info("文件下载成功，大小：{} bytes", fileBytes.length);
            return fileBytes;

        } catch (Exception e) {
            log.error("下载文件失败：{}，错误：{}", fileUrl, e.getMessage(), e);
            return null;
        }
    }

    /**
     * 检查URL是否为PDF文件
     * 
     * @param fileUrl 文件URL
     * @return 是否为PDF文件
     */
    public boolean isPdfFile(String fileUrl) {
        if (StrUtil.isEmpty(fileUrl)) {
            return false;
        }
        return fileUrl.toLowerCase().endsWith(".pdf");
    }
}
